﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Text;
using System.Windows.Forms;
using DevExpress.XtraEditors;
using QLTV_BLL;
using QLTV_Public;
using In_PhieuMuonTaiLieu;

namespace QLTV_GiaoDien
{
    public partial class uc_MuonTaiLieu : DevExpress.XtraEditors.XtraUserControl
    {
        public uc_MuonTaiLieu()
        {
            InitializeComponent();
        }
        BindingList<DanhSach_TaiLieu> danhsach=new BindingList<DanhSach_TaiLieu>();
        public void layTaiLieu()
        {
            int maTL;
            string tenTL, tacGia, theLoai;
            maTL = Convert.ToInt32(gridView1.GetRowCellValue(gridView1.FocusedRowHandle,"Mã Tài Liệu"));
            tenTL = gridView1.GetRowCellValue(gridView1.FocusedRowHandle, "Tên Tài Liệu").ToString();
            tacGia = gridView1.GetRowCellValue(gridView1.FocusedRowHandle, "Tác Giả").ToString();
            theLoai = gridView1.GetRowCellValue(gridView1.FocusedRowHandle, "Thể Loại").ToString();

            danhsach.Add(new DanhSach_TaiLieu(maTL,tenTL,tacGia,theLoai));
        }

        TimKiem_BLL timkiem_bll = new TimKiem_BLL();
        TrungGian tg = new TrungGian();
        private void uc_MuonTaiLieu_Load(object sender, EventArgs e)
        {
            gridControl1.DataSource = timkiem_bll.Load_MuonTra_TaiLieu();
            gridControl2.DataSource = danhsach;
            btn_Xoa.Enabled = false;
            cob_MaNV.Text = (tg.MaNV).ToString();
            btn_Luu.Enabled = false;
        }

        private void txt_TaiLieu2_TextChanged(object sender, EventArgs e)
        {
            TaiLieu_Public tl = new TaiLieu_Public();
            tl.TenTaiLieu = txt_TaiLieu2.Text;
            gridControl3.DataSource = timkiem_bll.TimKiem_TaiLieu_DangMuon(tl);
        }

        private void btn_Chon_Click(object sender, EventArgs e)
        {
            int soLuong = Convert.ToInt32(gridView1.GetRowCellValue(gridView1.FocusedRowHandle,"Số Lượng"));
            if (soLuong > 0)
            {
                int kt = gridView2.RowCount;// đếm số dòng trong gridview
                if (kt ==0) // nếu =0 thì lấy vào gridview
                {
                    layTaiLieu();
                    txt_SoDong.Text =( gridView2.RowCount).ToString();
                }
                int d = 0, maTL1 = Convert.ToInt32(gridView1.GetRowCellValue(gridView1.FocusedRowHandle, "Mã Tài Liệu"));// lấy mã thuốc ở bên danh sách tài liệu
                if (kt > 0)// nếu #0 thì kiểm tra mã tài liệu xem tồn tại chưa
                {
                    for (int i = 0; i < gridView2.RowCount; i++)
                    {
                        int maTL2=Convert.ToInt32(gridView2.GetRowCellValue(i,"MaTaiLieu"));
                        if (maTL1 == maTL2)
                            d = d + 1;
                    }
                    if (d == 0)
                    {
                        layTaiLieu();
                        txt_SoDong.Text = (gridView2.RowCount).ToString();
                    }
                    if (d > 0)
                    {
                        XtraMessageBox.Show("Tài liệu này đã được chọn!","Thông Báo",MessageBoxButtons.OK,MessageBoxIcon.Information);
                    }

                }
            }
            else
                XtraMessageBox.Show("Sách không còn trong kho!","Thông Báo",MessageBoxButtons.OK,MessageBoxIcon.Error);
        }

        private void btn_Xoa_Click(object sender, EventArgs e)
        {
            string tenTL = gridView2.GetRowCellValue(gridView2.FocusedRowHandle,"TenTaiLieu").ToString();
            if (XtraMessageBox.Show("Bạn có muốn xóa: " + tenTL.ToString() + " \ntrong danh sách tài liệu đã được chọn này không?", "Thông Báo", MessageBoxButtons.OKCancel, MessageBoxIcon.Question) == DialogResult.OK)
            {
                gridView2.DeleteSelectedRows();
                txt_SoDong.Text = (gridView2.RowCount).ToString();
            }
        }

        private void txt_SoDong_TextChanged(object sender, EventArgs e)
        {
            if (txt_SoDong.Text == "0")
            {
                btn_Xoa.Enabled = false;
                btn_Luu.Enabled = false;
            }
            else
            {
                btn_Xoa.Enabled = true;
                btn_Luu.Enabled = true;
            }
        }
        

        private void cob_MaNV_TextChanged(object sender, EventArgs e)
        {
            string sql = "select HoTen from tbl_NguoiDung where MaNV='" + cob_MaNV.Text + "'";
            DataTable dt = new DataTable();
            dt = timkiem_bll.TaoBang(sql);
            cob_NhanVien.DataSource = dt;
            cob_NhanVien.DisplayMember = "HoTen";
        }

        private void cob_MaPhieuMuon_Click(object sender, EventArgs e)
        {
            string sql = "select MaPhieuMuon from tbl_PhieuMuon where not exists (select MaPhieuMuon from tbl_MuonTra where  tbl_PhieuMuon.MaPhieuMuon=tbl_MuonTra.MaPhieuMuon)";
            DataTable dt = new DataTable();
            dt = timkiem_bll.TaoBang(sql);
            cob_MaPhieuMuon.DataSource = dt;
            cob_MaPhieuMuon.DisplayMember = "MaPhieuMuon";
        }

        private void cob_MaPhieuMuon_TextChanged(object sender, EventArgs e)
        {
            try
            {
                string sql = "select * from tbl_PhieuMuon,tbl_DocGia where tbl_PhieuMuon.MaDocGia=tbl_DocGia.MaDocGia and tbl_PhieuMuon.MaPhieuMuon='" + cob_MaPhieuMuon.Text + "'";
                DataTable dt = new DataTable();
                dt = timkiem_bll.TaoBang(sql);
                cob_MaDocGia.DataSource = dt;
                cob_MaDocGia.DisplayMember = "MaDocGia";
                cob_HaVaTen.DataSource = dt;
                cob_HaVaTen.DisplayMember = "HoVaTen";
            }
            catch (Exception)
            { }
        }
        
        TaiLieu_BLL tailieu_bll = new TaiLieu_BLL();
        TaiLieu_Public tl = new TaiLieu_Public();
        MuonTra_BLL muontra_bll = new MuonTra_BLL();
        NhatKy_BLL nhatky_bll = new NhatKy_BLL();
        NhatKy_Public nk = new NhatKy_Public();
        private void btn_Luu_Click(object sender, EventArgs e)
        {
            int d = gridView2.RowCount;
            MuonTra_Public mt = new MuonTra_Public();
            if (cob_MaPhieuMuon.Text != "" && d>0)
            {
                DataTable dt = new DataTable();
                string sql;
                int SLCu;
                for (int i = 0; i < gridView2.RowCount; i++)
                {
                    mt.MaPhieuMuon = int.Parse(cob_MaPhieuMuon.Text);
                    mt.MaTaiLieu = Convert.ToInt32(gridView2.GetRowCellValue(i, "MaTaiLieu"));
                    mt.NgayMuon = Convert.ToDateTime(dateTime_NgayMuon.Text);
                    mt.HanTra = Convert.ToDateTime(dateTime_HanTra.Text);
                    mt.TrangThai = "Đang Mượn";
                    mt.MaNV = int.Parse(cob_MaNV.Text);
                    muontra_bll.insert_MuonTra(mt, mt, mt, mt, mt, mt);
                    //update số lượng sách
                    sql = "select SoLuong from tbl_TaiLieu where MaTaiLieu='" + mt.MaTaiLieu + "'";
                    dt = tailieu_bll.taoBang(sql);
                    cob_SoLuongSach.DataSource = dt;
                    cob_SoLuongSach.DisplayMember = "SoLuong";
                    SLCu = int.Parse(cob_SoLuongSach.Text);
                    tl.MaTaiLieu = Convert.ToInt32(gridView2.GetRowCellValue(i, "MaTaiLieu"));
                    tl.SoLuong = SLCu - 1;
                    tailieu_bll.update_TaiLieu_SoLuong(tl, tl);
                    //luu nhật ký
                    tl.TenTaiLieu = gridView2.GetRowCellValue(i, "TenTaiLieu").ToString();
                    string day = DateTime.Now.ToString();
                    nk.MaNV = tg.MaNV;
                    nk.NgayGio = day; 
                    nk.HanhDong = "Mượn Tài Liệu";
                    nk.MoTa = "Cho mượn tài liệu: '"+tl.TenTaiLieu+"' có Mã: '" +tl.MaTaiLieu + "'";
                    nhatky_bll.insert_nhatKy(nk, nk, nk, nk);

                }
                if (XtraMessageBox.Show("Mượn thành công! Bạn có muốn In phiếu mượn không?", "Thông Báo", MessageBoxButtons.OKCancel, MessageBoxIcon.Question) == DialogResult.OK)
                {
                    Form1 f = new Form1();
                    f.Ma=int.Parse(cob_MaPhieuMuon.Text);
                    f.ShowDialog();
                }
                btn_Huy_Click(sender,e);
                uc_MuonTaiLieu_Load(sender, e);
                cob_SoLuongSach.ResetText();
            }
            else
            {
                XtraMessageBox.Show("Bạn chưa nhập Mã phiếu mượn hoặc chưa chọn sách!","Thông Báo",MessageBoxButtons.OK,MessageBoxIcon.Information);
                cob_MaPhieuMuon.Focus();
            }
        }
        public void xoaDuLieu()
        {
            for (int i = 0; i < gridView2.RowCount; i++)
            {
                gridView2.DeleteRow(i);
            }
        }

        private void btn_Huy_Click(object sender, EventArgs e)
        {
            txt_SoDong.Text = "0";
            cob_MaPhieuMuon.ResetText();
            cob_MaDocGia.ResetText();
            cob_HaVaTen.ResetText();
            for (int i = 0; i < 100; i++)
            {
                xoaDuLieu();
            }
            txt_SoDong_TextChanged(sender, e);
            
        }

        private void txt_TaiLieu1_TextChanged(object sender, EventArgs e)
        {
            TaiLieu_Public tl = new TaiLieu_Public();
            tl.TenTaiLieu = txt_TaiLieu1.Text.Trim();
            gridControl1.DataSource = timkiem_bll.TiemKiem_TaiLieu(tl);
        }

        private void btn_LamMoi_Click(object sender, EventArgs e)
        {
            uc_MuonTaiLieu_Load(sender,e);
            txt_TaiLieu1.ResetText();
        }

        private void btn_Refresh_Click(object sender, EventArgs e)
        {
            uc_MuonTaiLieu_Load(sender, e);
            txt_TaiLieu2.ResetText();
        }

        private void btn_MaPhieuMuon_Click(object sender, EventArgs e)
        {
            frm_Muon_PhieuMuon f = new frm_Muon_PhieuMuon();
            f.ShowDialog();
        }

    }
}
